src = ["src"]
cache-dir = "../.cache/ruff"  # папку кэша линтера отправляет на уровень выше проекта, чтобы случайно не подселить в репозиторий.

select = ["E", "W", "F", "B", "I", "Q", "COM"] # "ANN" "ASYNC"
ignore = ["D100"]  # вроде это ошибка которая чекает заглушки внутри библиотек/за них не отвечаем, потому в игнор
line-length = 135  # длинна строк кода в проекте
fixable = ["I", "W", "COM", "Q"]  # будет исправлять найденные ошибки если запустить с флагом --fix
extend-exclude = [  # игнор файлов и директорий
    "settings.py",
    "manage.py",
    "migrations",
    "__init__.py",
    ".cache",
    "__pycache__",
    "infra",
    "nginx",
    ".vscode",
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".git-rewrite",
    ".hg",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "venv",
    "ex_venv",
    "env.py",
    "versions",
    "migrations",
]

[per-file-ignores]
"settings.py" = ["E501"]  # игнорирует ошибку длинну строки в файле settings.py

[flake8-quotes]
docstring-quotes = "double"  # будет отслеживать чтобы docstring был в двойных ковычках.
inline-quotes = "double"  # будет отслеживать что в коде основым, используются одинарные ковычки.


# ruff check path/to/file.py   # проверка, все ли ок, покажет ошибки
# чтобы исправить все из раздела fixable = ["I", "W", "COM", "Q"] запускаем с флагом --fix
# пример ruff check path/to/file.py --fix

# "E" - пробелы, неожиданные отступы между условий или переменных в коде.
# "W" - это про лишние пробелы в пустых строках, в конце кода, отсутствие пустой строки в конце код и тп, все про пробелы вне условий кода.
# "F" - это Pyflakes - для обнаружения потенциальных проблем в коде. Например: может удалить неиспользуемы импорты.
# "B" это flake8-bugbear - находит баги и некорректный код, в основном устаревшее использование кода, или не по фэн шую там.
# "I" это isort, все про импорты, их алфавитный порядок и правильные отступы.
# "Q" это flake8-quotes - все про правильное соблюдение одинарных и двойных ковычек
# "COM" это flake8-commas - помогает устранить tralling coma, забытые запятые по pep и тп.
# "ANN" - это про типизацию, по желанию.
# "ASYNC" - помогает по асинхронщине, по желанию.

# УСТАНОВКА - pip install ruff
# Файл с настройками необходимо назвать: ruff.toml
# src = ["backend"] ставим с названием своего проекта, иначе isort будет работать некорректно.

# ссылка на доку https://docs.astral.sh/ruff/rules/